const express = require("express");
const db = require("./server/db");
const app = express();
const multer = require('multer');
const port = 3000;
const apiRouter = require('./routes/api.js');
const authRouter = require('./routes/auth.js');
const productRouter = require('./routes/product.js');
const uploadRouter = require('./routes/upload.js');

// 初始化数据库连接池
db.init().catch((err) => {
  console.error("数据库初始化失败:", err);
  process.exit(1);
});

// 中间件
app.use(express.json());
app.use((req, res, next) => {
  next();
});
// 设置静态资源目录
app.use(express.static("assets"));
// 确保上传目录可以被访问
app.use('/other', express.static('other'));
// 确保上传目录可以被访问
app.use('/uploads', express.static('uploads'));
// 根路由
app.get("/", (req, res) => {
  res.send("Hello World!");
});
app.use('/api', apiRouter); // 挂载到/api路径下
app.use('/api', authRouter); // 挂载到/api路径下
app.use('/api', productRouter); // 挂载到/api路径下
app.use('/api', uploadRouter); // 挂载到/api路径下

// 错误处理中间件
app.use((err, req, res, next) => {
  console.error(err);
  if (err instanceof multer.MulterError) {
    // Multer 错误处理
    return res.status(400).json({ error: err.message });
  } else if (err) {
    // 其他错误处理
    return res.status(500).json({ error: err.message });
  }
  next();
});

// 启动服务器
app.listen(port, () => {
  console.log(`服务器运行在 http://localhost:${port}`);
});
